﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIPDTO;

namespace SIPDAL
{
    public class mgMatrimonio
    {

        SIPDataContext _dc = new SIPDataContext();
        tblMatrimonio _tbmatrimonio = new tblMatrimonio();
        List<dtoMatrimonio> _matrimonio = new List<dtoMatrimonio>();
        dtoError _resp = new dtoError();

        /// <summary>
        /// Metodo para el registro de clerigo
        /// </summary>
        /// <param name="pers"></param>
        /// <returns></returns>
       public dtoError RegistrarMatrimonio(dtoMatrimonio matrimonio)
       {
            //Otra información
            _tbmatrimonio.id_parroquia = matrimonio.IdParroquia;
            _tbmatrimonio.num_asiento = matrimonio.NumAsiento;
            _tbmatrimonio.num_folio = matrimonio.NumFolio;
            _tbmatrimonio.num_libro = matrimonio.NumLibro;
            _tbmatrimonio.fecha_matrimonio = Convert.ToDateTime(matrimonio.FechaMatrimonio);
            //Información de los esposos
            _tbmatrimonio.tipo_identificacion_esposo = matrimonio.TipoIdentificacionEsposo;
            _tbmatrimonio.id_esposo = matrimonio.IdEsposo;
            _tbmatrimonio.tipo_identificacion_esposa = matrimonio.TipoIdentificacionEsposa;
            _tbmatrimonio.id_esposa = matrimonio.IdEsposa;
            //Información Padrinos
            _tbmatrimonio.tipo_identificacion_padrino = matrimonio.TipoIdentificacionPadrino;
            _tbmatrimonio.id_padrino = matrimonio.IdPadrino;
            _tbmatrimonio.tipo_identificacion_madrina = matrimonio.TipoIdentificacionMadrina;
            _tbmatrimonio.id_madrina = matrimonio.IdMadrina;
            //Información clérigo
            _tbmatrimonio.tipo_identificacion_clerigo = matrimonio.TipoIdentificacionClerigo;
            _tbmatrimonio.id_clerigo = matrimonio.IdClerigo;

            try
            {
                _resp = ExisteMatrimonio(matrimonio);
                if (_resp.IdError == -101)
                {
                    _dc.tblMatrimonios.InsertOnSubmit(_tbmatrimonio);
                    _dc.SubmitChanges();
                    _resp.Mensaje = "Información guardada correctamente.";
                    _resp.IdError = 100;
                }

               return _resp;
            }

            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                return _resp;
            }

      }

       public dtoError ExisteMatrimonio(dtoMatrimonio  matrimonio)
       {

           var condicion = (from p in _dc.tblConfirmas
                            where p.num_asiento == matrimonio.NumAsiento
                            && p.num_folio == matrimonio.NumFolio
                            && p.num_libro == matrimonio.NumLibro
                            && p.id_parroquia == matrimonio.IdParroquia
                            select p).Count();
           if (Convert.ToInt32(condicion.ToString()) > 0)
           {
               _resp.Mensaje = "Registro ya existe.";
               _resp.IdError = 101;

           }
           else
           {
               _resp.IdError = -101;
               _resp.Mensaje = "Registro no existe.";
           }
           return _resp;
       }


       /// <summary>
       /// Obtiene los datos de los Matrimonios por parroquia para mostrar en el listado
       /// </summary>
       /// <param name="canton"></param>
       /// <returns></returns>
       public List<dtoMatrimonio> ObtenerMatrimonioxParroquia(dtoMatrimonio  matrimonio)
       {
           int i = 0;

           try
           {

               var condicion = (from p in _dc.tblMatrimonios
                                where p.id_parroquia == matrimonio.IdParroquia
                                select p).ToList();
               {
                   foreach (tblMatrimonio reg in condicion)
                   {
                       _matrimonio.Add(new dtoMatrimonio());
                       _matrimonio[i].NumLibro = reg.num_libro;
                       _matrimonio[i].NumFolio = reg.num_folio;
                       _matrimonio[i].NumAsiento = reg.num_asiento;
                       _matrimonio[i].FechaMatrimonio = Convert.ToString(reg.fecha_matrimonio.Value.Day + "/" + reg.fecha_matrimonio.Value.Month + "/" + reg.fecha_matrimonio.Value.Year);
                       _matrimonio[i].TipoIdentificacionEsposo = reg.tipo_identificacion_esposo;
                       _matrimonio[i].IdEsposo = reg.id_esposo;
                       _matrimonio[i].TipoIdentificacionEsposa = reg.tipo_identificacion_esposa;
                       _matrimonio[i].IdEsposa = reg.id_esposa;
                       i++;
                   }
               }

           }
           catch (Exception ex)
           {
               throw new Exception("Ocurrió un error al obtener los datos " + ex.Message);
           }

           return _matrimonio;

       }

    }
}
